package main
/*

	字符串strings相关处理函数

*/
import(
	"fmt"
	"strings"
)

func main()  {
	// 按照空格分割字符串
	fmt.Println(strings.Fields("theshy jack maria")) // [theshy jack maria]

	// 字符串中是否包含某个子串
	fmt.Println(strings.Contains("theshy is as butiful", "thes")) // true

	// 字符串是否包含char集合中的任意一个
	fmt.Println(strings.ContainsAny("theshy is butiful", "ae")) // true

	// 字符串是否以给定的字符串开头
	fmt.Println(strings.HasPrefix("jack is very good", "jack")) // true

	// 字符串是否以指定字符串结尾
	fmt.Println(strings.HasSuffix("jack is very good", "good")) // true

	// 给定字符串在字符串中最后出现的位置
	fmt.Println(strings.LastIndex("jack c c l", "c")) // 7

	// 给定字符串在字符串中首次出现的位置
	fmt.Println(strings.Index("jack c c l", "c")) // 2

	// 给定的字符集合中任意字符首次出现的位置, 取最先出现的  a 比 c 先出现, 所以结果为1
	fmt.Println(strings.IndexAny("jack c c l", "ac")) // 1

	// string切片通过给定的字符串连接成一个字符串
	strArr := []string{"jack", "theshy"}
	fmt.Println(strings.Join(strArr, " <=> ")) // jack <=> theshy

	// 字符串替换, n 为当旧字符串出现多次时替换多少次, 超过部分不做处理
	fmt.Println(strings.Replace("jack is beautiful", "jack", "theshy", 1)) // theshy is beautiful

	// 字符串替换, 无替换次数, 全部替换
	fmt.Println(strings.ReplaceAll("jack, jack is beautiful", "jack", "theshy")) // theshy, theshy is beautiful

	// 将该字符串重复指定次数
	fmt.Println(strings.Repeat("theshy, ", 3))  // theshy, theshy, theshy,

	// 按照指定字符串分割成切片
	fmt.Println(strings.Split("1,2,3,4,5,6,15", ",")) // [1 2 3 4 5 6 15]

	// 按照指定字符串分割成切片, 同时保留分隔符, 放在每个分割元素的后面
	fmt.Println(strings.SplitAfter("1,2,3,4,5,6,15", ",")) // [1, 2, 3, 4, 5, 6, 15]

	// 和SplitAfter类似, 但指定了切片的元素个数, 限制分割
	fmt.Println(strings.SplitAfterN("1,2,3,4,5,6,15", ",", 2)) // [1, 2,3,4,5,6,15]

	// 按照指定字符串进行分割, 同时限制切片长度
	fmt.Println(strings.SplitN("1,2,5,3,6,15", ",", 2))

	// 标题模式, 首字母大写
	fmt.Println(strings.Title("theshy is ok")) // Theshy Is Ok

	// 全部转大写
	fmt.Println(strings.ToUpper("thehshy")) // THESHY

	// 全部转小写
	fmt.Println(strings.ToLower("THESHY")) // theshy

	// 去除首尾指定字符串
	fmt.Println(strings.Trim(" theshy    ", " ")) // theshy

	// 去除首尾空白符
	fmt.Println(strings.TrimSpace(" theshy sss  ")) // thehsy sss

	// 去除指定字符串前缀
	fmt.Println(strings.TrimPrefix("jack is ok", "jac")) // k is ok
}
